home *** CD-ROM | disk | FTP | other *** search
- }0a000
- {g --- --------
- {f DIY Hardware
- {g --- --------
-
- {cContributers:
- {a Terminator / Destiny - Coding
- Narc / Destiny - Hardware
-
-
- This article will detail how anyone with knowledge of 68000 assembly and
- electronics could go about constructing a device similiar to Datels Action
- Replay. Although there will be some differences between our cartridge for
- various reasons such as costs, simplicity e.t.c. Any reference to WE below
- refers to Narc and myself (Terminator)
-
-
- {d-= {fHARDWARE DESIGN {d=-{a
-
-
- Okay. There are two ways you could go about this.
-
- {c 1.{a You have the software in an Eprom.
- Disadvantages: Costs. You need an Eprom programmer for a start...
-
- {c 2.{a You have 128k of RAM on the board.
- Disadvantages: You have to upload your software into the board every
- time you turn on the Amiga.
-
- We will be using the second method. It isn't really a disadvantage anyway
- because then, you will be able to update your cartridge program easily. and
- also, you could in theory, dump commercial cartridges to disk, then upload
- them into your CART-RAM.
-
- The next problem is finding a way of activating the cartridge.
-
- {c 1.{a The Expansion bus has a pin called BEER which when pulled low, causes a
- bus error exception.
- If we repoint the bus error vector at $8.w to the first address of our
- cartidrige ram, when we pull this low, we wil be thrown into the
- cartridge. (Upon exit, dont forget we have to fix the bus error stuff
- thats been dumped onto the stack)
- This method is lousy coz we have to repoint the BUS ERROR VECTOR
- which is lame and If a program changes it back, then we won't enter the
- cartridge! Bad news :-(
-
- {c 2.{a The Expansion bus also contains 3 pins which you use Binary style to
- tell the amiga which interupt to cause when the cartridge is activated.
- In this case, a level 7 (NMI - Non maskable interupt) is best because
- basically, this interupt is Unstoppable.
- So we pull all three lines low. (1+2+4 = 7)
-
- {c 3.{a Upon reset, the computer jumps to F00002.
- Look at the reset routine in ROM. You will notice that it checks if
- {fF00000 {ais a copy of Rom, if not, it jumps to 2(a5) where a5 points to
- {f F00000.{a
- Well, why not use an Address decoder in the cartridge to map our RAM to
- {f F00000.{a Then, the ROM will not copy there. And on reset we jump into the
- cartridge.
- But isn't resetting a lousy way of entering the monitor?
- Ok, Well connect a switch to pull the RESET line low.
- (This causes an external reset but does the same thing as the 3key reset
- - I think :-)
-
- {c 4.{a Software interrupts.
- This method is pretty pointless considering the fact that a mojority of
- programs you wanna enter (games,demos e.t.c.) will kill multitasking and
- that goes for a mojority of interupts.
- Note however, that a lot of demos dont kill the level 6 interupt.
- There's an entry point!
-
- {a So there we have four methods of entering the cartridge.
- We decided to choose option 3 because basically, it is unstoppable.
- And don't tell me otherwise because the 3 key reset is Hardwired to reset.
- (Maybe not on Wb2.0 - I hear the Keyboard.device accepts the
- installResetHandler which did nothing on V1.3 - True?)
-
-
- {d -= {fSOFTWARE DESIGN {d=-{a
-
- Okay, a few points have to be remembered.
-
- {e 1. {aYour code must be relocatable. Make it PC relative.
- {e 2. {aNo Absolute addressing
- {e 3. {aDon't use intuition screens! Use a custom screen.
- {e 4. {aTry not if possible to use any library routines other than Exec & Dos
- {e 5. {aOn entry, Store the current system status, Restore cartridge variables
- {ato defaults.
- {e 6. {aOn exit, Restore system status.
-
- {a Those were the basics.
-
- {e The clever amongst you will have been wondering where we set up our screen?
- Because basically, the bitplane pointers only work when pointing into ChipRAM
-
- {a That is also why action replay and other such devices use a 1 plane screen.
- (to cut down on memory use)
-
- {a This is what we do on entry to the cartridge.
-
- {f 1> {eTake an area of memory (256*40) from $1000.w
- {f 2> {eSwap it with a chunk (256*40) of cartridge memory.
- {f 3> {eWe then address or screen memory at $1000.w{a
-
- On exit, we swap the 1000.w with our cartridge memory again. There is no
- other way of doing this. (Even AR3 does it)
-
- The larger your screen and the more planes it has, the more chipram you have
- to overwrite. Therefore, a 1 plane lowres screen would be best but it looks
- shit so we chose a 1 plane medres screen!
-
- {d-= {fCONNECTORS {d=-{a
-
- The 86 pin edge connectors for the A500 expansion port, are quite difficult to
- obtain. I asked Commodore for a supplier and they gave me the following fone
- number :-
-
- {e CPC Inc. - 0772 555034
-
- {a They are {gCommodore's {a official spares company so if they don't have any, you
- can't get them! If you are stuck and can't get the proper connectors, then
- there are two ways you could go about MAKING SOME!
-
- {c 1) {aGet a 96 pin connector and cut it down to size.
- it looks like this ...
-
- {f ::::::::::::::::::::::::::::::::: :::::::::::::::
-
- {a That's right it has a gap! And that gap makes the connector size shorter
- than 86 pins. Damn! Don't Worry! It will still fit and all the pins we use
- will still be accessable!
- It just won't look so good! :-(
-
- {c 2) {aGet two 40 something connectors and cut them so they have 43 pins on
- each and then glue them together!
- It is a good idea to put some sort of solid material on thge top and
- bottom like this ...
-
- {g ------------- {a <- Solid stuff
- {f ::::::::::::::::::::::::::::::::::::::::::: {a < 2 connectors glued together in middle
- {g ------------- {a<- Solid stuff
-
-
-
- {a Well, That's all I'm going to say for this month. This article will be
- continued only if I get some feedback from {dYOU{a!
-
- {a I don't wanna be writing articles which no-one is going to read! If you like
- this article and want it to appear regularly, let us know!
-
- {f Thanks! - Terminator